/* 
 * File:   SMP.h
 * Author: Vagner Clementino
 *
 * Created on 11 de Março de 2012, 13:23
 */

#include "matriz_casamento.h"
#include "Lista.h"

#define OUTFILE "output.txt"

/*Resolve o problema dos casamentos estáveis com n indíduos, onde n é o
 * parâmetro num_individuos, sendo que este estão armazenados nas listas
 * listas_homens e lista_mulheres. Os casais, junto a satisfabilidade
 * masculina, feminina e geral estarão no arquivo output.txt*/
void smp (Lista lista_homens, Lista lista_mulheres, int num_individuos);

/*Cria os casamentos estáveis armazenando-os em uma matriz_casamento*/
void casamento_estavel(Lista homens, Lista mulheres, int num_individuos);

/*Para casa homem e mulher na listas homens e mulheres define o parceiro ou
 * parceira com base em uma matriz_casamento matriz*/
void define_casamentos(matriz_casamento matriz, int tam_matriz, Lista homens, 
                       Lista mulheres);

/*Calcula a satisfablidade (vide especificação) de uma lista de pessoas.*/
float calcula_satisfabilidade(const Lista l);

/*Escreve no arquivo apontado por saida os casais criados com base em uma
 * lista de pessoa l*/
void imprime_casamentos(Lista l, FILE* saida);

/*Escreve no arquivo apontado por saida a satisfabilidade com base em uma
 * lista de pessoa l*/
void imprime_satisfabilidade(float satis_geral, float satis_homens, 
                             float satis_mulheres, FILE* saida);
